home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 December / PCWorld_2000-12_cd.bin / Software / Vyzkuste / msjvm / Download the Microsoft Virtual Machine for Internet Explorer 5_0 / toolbar.js < prev   
Text File  |  2000-10-27  |  21KB  |  750 lines

  1. var ToolBar_Supported = false;
  2. var Frame_Supported   = false;
  3. var DoInstrumentation = false;
  4.  
  5. if (navigator.userAgent.indexOf("MSIE")    != -1 && 
  6.     navigator.userAgent.indexOf("Windows") != -1 && 
  7.     navigator.appVersion.substring(0,1) > 3)
  8. {
  9.     ToolBar_Supported = true;
  10. }
  11.  
  12.     var a= new Array();
  13.     a[0] = prepTrackingString(window.location.hostname,7);    
  14.     a[1] = prepTrackingString('PV',8);
  15.     a[2] = prepTrackingString(window.location.pathname,0);
  16.     if(window.location.search != '')
  17.     {
  18.         a[a.length] = prepTrackingString(window.location.search,1);
  19.     }
  20.     if( '' != window.document.referrer)
  21.     {
  22.         a[a.length] = prepTrackingString(window.document.referrer,5);
  23.     }
  24.     buildIMG(a);
  25.     
  26.  
  27.     
  28. if (ToolBar_Supported)
  29. {
  30.     
  31.     var newLineChar = String.fromCharCode(10);
  32.     var char34 = String.fromCharCode(34);
  33.     var LastMSMenu = "";
  34.     var CurICPMenu = "";
  35.     var IsMSMenu = false;
  36.     var IsMenuDropDown = true;
  37.     var HTMLStr;
  38.     var x = 0;
  39.     var y = 0;
  40.     var x2 = 0;
  41.     var y2 = 0;
  42.     var MSMenuWidth;
  43.     var ToolbarMinWidth;
  44.     var ToolbarMenu;
  45.     var ToolbarBGColor;
  46.     var ToolbarLoaded = false;
  47.     var aDefMSColor  = new Array(3);
  48.     var aDefICPColor = new Array(3);
  49.     var aCurMSColor  = new Array(3);
  50.     var aCurICPColor = new Array(3);
  51.     var MSFont;
  52.     var ICPFont;
  53.     var MaxMenu = 30;
  54.     var TotalMenu = 0;
  55.     var arrMenuInfo = new Array(30);
  56.     
  57.     // Output style sheet and toolbar ID
  58.     document.write("<SPAN ID='StartMenu' STYLE='display:none;'></SPAN>");
  59.  
  60.     // Build toolbar template
  61.     HTMLStr = 
  62.         "<DIV ID='idToolbar'     STYLE='background-color:white;width:100%'>" +
  63.         "<DIV ID='idRow1'        STYLE='position:relative;height:20;'>" +
  64.         "<DIV ID='idICPBanner'   STYLE='position:absolute;top:0;left:0;height:60;width:250;overflow:hidden;vertical-align:top;'><!--BEG_ICP_BANNER--><!--END_ICP_BANNER--></DIV>" +
  65.         "<DIV ID='idMSMenuCurve' STYLE='position:absolute;top:0;left:250;height:20;width:18;overflow:hidden;vertical-align:top;'><IMG SRC='/library/toolbar/images/curve.gif' BORDER=0></DIV>" +
  66.         "<DIV ID='idMSMenuPane'  STYLE='position:absolute;top:0;left:250;height:20;width:10;background-color:black;float:right;' NOWRAP><!--MS_MENU_TITLES--></DIV>" + 
  67.         "</DIV>" +
  68.         "<DIV ID='idRow2' STYLE='position:relative;left:250;height:40;'>" +
  69.         "<DIV ID='idADSBanner'   STYLE='position:absolute;top:0;left:0;height:40;width:200;vertical-align:top;overflow:hidden;'><!--BEG_ADS_BANNER--><!--END_ADS_BANNER--></DIV>" +
  70.         "<DIV ID='idMSCBanner'   STYLE='position:absolute;top:0;left:200;height:40;width:112;vertical-align:top;overflow:hidden;' ALIGN=RIGHT><!--BEG_MSC_BANNER--><!--END_MSC_BANNER--></DIV>" +
  71.         "</DIV>" +
  72.         "<DIV ID='idRow3' STYLE='position:relative;height:20;width:100%'>" +
  73.         "<DIV ID='idICPMenuPane' STYLE='position:absolute;top:0;left:0;height:20;background-color:black;' NOWRAP><!--ICP_MENU_TITLES--></DIV>" +
  74.         "</DIV>" +
  75.         "</DIV>" + 
  76.         "<SCRIPT TYPE='text/javascript'>" + 
  77.         "   var ToolbarMenu = StartMenu;" + 
  78.         "</SCRIPT>" + 
  79.         "<DIV WIDTH=100%>";
  80.  
  81.     // Define event handlers
  82.     window.onresize  = resizeToolbar;
  83.  
  84.     // Intialize global variables
  85.     ToolbarBGColor    = "white";                        // toolbar background color
  86.     MSFont  = "xx-small Verdana";
  87.     ICPFont = "bold xx-small Verdana";
  88.     
  89.     aDefMSColor[0]    = aCurMSColor[0]  = "black";    // bgcolor;
  90.     aDefMSColor[1]    = aCurMSColor[1]  = "white";    // text font color
  91.     aDefMSColor[2]  = aCurMSColor[2]  = "red";        // mouseover font color
  92.     
  93.     aDefICPColor[0]    = aCurICPColor[0] = "#6699CC";    // bgcolor;
  94.     aDefICPColor[1] = aCurICPColor[1] = "white";    // text font color
  95.     aDefICPColor[2] = aCurICPColor[2] = "red";        // mouseover font color
  96. }
  97.  
  98. // The hard-coded numbers in functions - drawToolbar() & resizeToolbar()
  99. // correspond to the dimension of the four gif files:
  100. //        ICP_BANNER: 60h x 250w
  101. //        ADS_BANNER: 40h x 200w
  102. //        MSC_BANNER: 40h x 112w
  103. //        Curve:        20h x 18w
  104.  
  105. function drawToolbar()
  106. {
  107.     HTMLStr += "</DIV>";
  108.     document.write(HTMLStr);
  109.     ToolbarLoaded = true;
  110.  
  111.     MSMenuWidth     = Math.max(idMSMenuPane.offsetWidth, (200+112));
  112.     ToolbarMinWidth = (250+18) + MSMenuWidth;
  113.  
  114.     idToolbar.style.backgroundColor     = ToolbarBGColor;
  115.     idMSMenuPane.style.backgroundColor  = aDefMSColor[0];
  116.     idICPMenuPane.style.backgroundColor = aDefICPColor[0];
  117.     resizeToolbar();
  118.  
  119.     for (i = 0; i < TotalMenu; i++) 
  120.     {
  121.         thisMenu = document.all(arrMenuInfo[i].IDStr);
  122.         if (thisMenu != null)
  123.         {
  124.             if (arrMenuInfo[i].IDStr == LastMSMenu && arrMenuInfo[i].type == "R")
  125.             {
  126.                 //Last MSMenu has to be absolute width
  127.                 arrMenuInfo[i].type = "A";
  128.                 arrMenuInfo[i].unit = 200;
  129.             }
  130.             if (arrMenuInfo[i].type == "A")
  131.                 thisMenu.style.width = arrMenuInfo[i].unit;
  132.             else 
  133.                 thisMenu.style.width = Math.round(arrMenuInfo[i].width * arrMenuInfo[i].unit) + 'em';
  134.         }
  135.     }
  136. }
  137.  
  138. function resizeToolbar()
  139. {
  140.     if (ToolBar_Supported == false) return;
  141.  
  142.     w = Math.max(ToolbarMinWidth, document.body.clientWidth) - ToolbarMinWidth;
  143.     
  144.     idMSMenuCurve.style.left  = (250+w);
  145.     idMSMenuPane.style.left   = (250+w+18);
  146.     idMSMenuPane.style.width  = MSMenuWidth;
  147.  
  148.     idADSBanner.style.left    = (w+18);
  149.  
  150.     idMSCBanner.style.left    = (w+18+200);
  151.     idMSCBanner.style.width   = (MSMenuWidth - 200);
  152.     
  153.     idICPMenuPane.style.width = ToolbarMinWidth + w;
  154. }
  155.  
  156. function setToolbarBGColor(color)
  157. {    
  158.     ToolbarBGColor = color;
  159.     if (ToolbarLoaded == true)
  160.         idToolbar.style.backgroundColor = ToolbarBGColor;
  161. }    
  162.  
  163. function setMSMenuFont(sFont)
  164. {    MSFont = sFont;
  165. }
  166.  
  167. function setICPMenuFont(sFont)
  168. {    ICPFont = sFont;
  169. }
  170.  
  171. function setDefaultMSMenuColor(bgColor, fontColor, mouseoverColor)
  172. {    
  173.     if (bgColor   != "")      aDefMSColor[0] = bgColor;
  174.     if (fontColor != "")      aDefMSColor[1] = fontColor;
  175.     if (mouseoverColor != "") aDefMSColor[2] = mouseoverColor;
  176. }
  177.  
  178. function setDefaultICPMenuColor(bgColor, fontColor, mouseoverColor)
  179. {    
  180.     if (bgColor   != "")      aDefICPColor[0] = bgColor;
  181.     if (fontColor != "")      aDefICPColor[1] = fontColor;
  182.     if (mouseoverColor != "") aDefICPColor[2] = mouseoverColor;
  183. }
  184.  
  185. function setICPMenuColor(MenuIDStr, bgColor, fontColor, mouseoverColor)
  186. {    
  187.     if (ToolbarLoaded == false) return;
  188.  
  189.     // Reset previous ICP Menu color if any
  190.     if (CurICPMenu != "")
  191.     {
  192.         PrevID = CurICPMenu.substring(4);
  193.         CurICPMenu = "";
  194.         setICPMenuColor(PrevID, aDefICPColor[0], aDefICPColor[1], aDefICPColor[2]);
  195.     }
  196.  
  197.     var    id = "AM_" + "ICP_" + MenuIDStr;
  198.     var thisMenu = document.all(id);
  199.     if (thisMenu != null)
  200.     {
  201.         CurICPMenu = "ICP_" + MenuIDStr;
  202.         aCurICPColor[0] = bgColor;
  203.         aCurICPColor[1] = fontColor;
  204.         aCurICPColor[2] = mouseoverColor;
  205.  
  206.         // Change menu color
  207.         if (bgColor != "")
  208.             thisMenu.style.backgroundColor = bgColor;
  209.         if (fontColor != "")
  210.             thisMenu.style.color = fontColor;
  211.  
  212.         // Change subMenu color
  213.         id = "ICP_" + MenuIDStr;
  214.         thisMenu = document.all(id);
  215.         if (thisMenu != null)
  216.         {
  217.             if (bgColor != "")
  218.                 thisMenu.style.backgroundColor = bgColor;
  219.             
  220.             if (fontColor != "")
  221.             {
  222.                 i = 0;
  223.                 id = "AS_" + "ICP_" + MenuIDStr;
  224.                 thisMenu = document.all.item(id,i);
  225.                 while (thisMenu != null)
  226.                 {
  227.                     thisMenu.style.color = fontColor;
  228.                     i += 1;
  229.                     thisMenu = document.all.item(id,i);
  230.                 }
  231.             }
  232.         }
  233.     }
  234. }
  235.  
  236. function setAds(Gif,Url,AltStr)
  237. {    setBanner(Gif,Url,AltStr,"<!--BEG_ADS_BANNER-->","<!--END_ADS_BANNER-->");
  238. }
  239.  
  240. function setICPBanner(Gif,Url,AltStr)
  241. {    setBanner(Gif,Url,AltStr,"<!--BEG_ICP_BANNER-->","<!--END_ICP_BANNER-->");
  242. }
  243.  
  244. function setMSBanner(Gif,Url,AltStr)
  245. {    tempGif = "/library/toolbar/images/" + Gif;
  246.     setBanner(tempGif,Url,AltStr,"<!--BEG_MSC_BANNER-->","<!--END_MSC_BANNER-->");
  247. }
  248.  
  249. function setBanner(BanGif, BanUrl, BanAltStr, BanBegTag, BanEndTag)
  250. {
  251.     begPos = HTMLStr.indexOf(BanBegTag);
  252.     endPos = HTMLStr.indexOf(BanEndTag) + BanEndTag.length;
  253.     
  254.     SubStr = HTMLStr.substring(begPos, endPos);
  255.     SrcStr = "";
  256.     if (BanUrl != "")
  257.         SrcStr += "<A Target='_top' HREF='" + formatURL(BanUrl, BanGif) + "'>";
  258.     SrcStr += "<IMG SRC='" + BanGif + "' ALT='" + BanAltStr + "' BORDER=0>";
  259.     if (BanUrl != "")
  260.         SrcStr += "</A>";
  261.     SrcStr = BanBegTag + SrcStr + BanEndTag;
  262.     HTMLStr = HTMLStr.replace(SubStr, SrcStr);    
  263. }
  264.  
  265. function setICPSubMenuWidth(MenuIDStr, WidthType, WidthUnit)
  266. {    tempID = "ICP_" + MenuIDStr;
  267.     setSubMenuWidth(tempID, WidthType, WidthUnit);
  268. }
  269.  
  270. function setMSSubMenuWidth(MenuIDStr, WidthType, WidthUnit)
  271. {    tempID = "MS_" + MenuIDStr;
  272.     setSubMenuWidth(tempID, WidthType, WidthUnit);
  273. }
  274.  
  275. function setSubMenuWidth(MenuIDStr, WidthType, WidthUnit)
  276. {
  277.     var fFound = false;
  278.     if (TotalMenu == MaxMenu)
  279.     {
  280.         alert("Unable to process menu. Maximum of " + MaxMenu + " reached.");
  281.         return;
  282.     }
  283.     
  284.     for (i = 0; i < TotalMenu; i++)
  285.         if (arrMenuInfo[i].IDStr == MenuIDStr)
  286.         {
  287.             fFound = true;
  288.             break;
  289.         }
  290.  
  291.     if (!fFound)
  292.     {
  293.         arrMenuInfo[i] = new menuInfo(MenuIDStr);
  294.         TotalMenu += 1;
  295.     }
  296.  
  297.     if (!fFound && WidthType.toUpperCase().indexOf("DEFAULT") != -1)
  298.     {
  299.         arrMenuInfo[i].type = "A";
  300.         arrMenuInfo[i].unit = 160;
  301.     }
  302.     else
  303.     {
  304.         arrMenuInfo[i].type = (WidthType.toUpperCase().indexOf("ABSOLUTE") != -1)? "A" : "R";
  305.         arrMenuInfo[i].unit = WidthUnit;
  306.     }
  307. }
  308.  
  309. // This function creates a menuInfo object instance.
  310. function menuInfo(MenuIDStr)
  311. {
  312.     this.IDStr = MenuIDStr;
  313.     this.type  = "";
  314.     this.unit  = 0;
  315.     this.width = 0;
  316.     this.count = 0;
  317. }
  318.  
  319. function updateSubMenuWidth(MenuIDStr)
  320. {
  321.     for (i = 0; i < TotalMenu; i++)
  322.         if (arrMenuInfo[i].IDStr == MenuIDStr)
  323.         {
  324.             if (arrMenuInfo[i].width < MenuIDStr.length) 
  325.                 arrMenuInfo[i].width = MenuIDStr.length;
  326.             arrMenuInfo[i].count = arrMenuInfo[i].count + 1;
  327.             break;
  328.         }
  329. }
  330.  
  331. function addICPMenu(MenuIDStr, MenuDisplayStr, MenuHelpStr, MenuURLStr)
  332. {     
  333.     if (addICPMenu.arguments.length > 4)
  334.         TargetStr = addICPMenu.arguments[4];
  335.     else
  336.         TargetStr = "_top";
  337.     tempID = "ICP_" + MenuIDStr;
  338.     addMenu(tempID, MenuDisplayStr, MenuHelpStr, MenuURLStr, TargetStr, true); 
  339. }
  340.  
  341. function addMSMenu(MenuIDStr, MenuDisplayStr, MenuHelpStr, MenuURLStr)
  342. {    
  343.     TargetStr = "_top";
  344.     tempID = "MS_" + MenuIDStr;
  345.     addMenu(tempID, MenuDisplayStr, MenuHelpStr, MenuURLStr, TargetStr, false); 
  346.     LastMSMenu = tempID;
  347. }
  348.  
  349. function addMenu(MenuIDStr, MenuDisplayStr, MenuHelpStr, MenuURLStr, TargetStr, bICPMenu)
  350. {
  351.     cFont   = bICPMenu? ICPFont : MSFont;
  352.     cColor0 = bICPMenu? aDefICPColor[0] : aDefMSColor[0];
  353.     cColor1 = bICPMenu? aDefICPColor[1] : aDefMSColor[1];
  354.     cColor2 = bICPMenu? aDefICPColor[2] : aDefMSColor[2];
  355.     tagStr  = bICPMenu? "<!--ICP_MENU_TITLES-->" : "<!--MS_MENU_TITLES-->";
  356.  
  357.     MenuStr = newLineChar;
  358.     if (bICPMenu == false && LastMSMenu != "")
  359.         MenuStr += "<SPAN STYLE='font:" + cFont + ";color:" + cColor1 + "'>| </SPAN>"; 
  360.     MenuStr += "<A TARGET='" + TargetStr + "' TITLE='" + MenuHelpStr + "'" +
  361.                "   ID='AM_" + MenuIDStr + "'" +
  362.                "   STYLE='text-decoration:none;cursor:hand;font:" + cFont + ";background-color:" + cColor0 + ";color:" + cColor1 + ";'";
  363.     if (MenuURLStr != "")
  364.     {
  365.         if (bICPMenu)
  366.             MenuStr += " HREF='" + formatURL(MenuURLStr, ("ICP_" + MenuDisplayStr)) + "'";
  367.         else
  368.             MenuStr += " HREF='" + formatURL(MenuURLStr, ("MS_" + MenuDisplayStr)) + "'";
  369.     }
  370.     else
  371.         MenuStr += " HREF='' onclick='window.event.returnValue=false;'";
  372.     MenuStr +=     " onmouseout="  + char34 + "mouseMenu('out' ,'" + MenuIDStr + "'); hideMenu();" + char34 + 
  373.                 " onmouseover=" + char34 + "mouseMenu('over','" + MenuIDStr + "'); doMenu('"+ MenuIDStr + "');" + char34 + ">" +
  374.                 " " + MenuDisplayStr + " </a>";
  375.     if (bICPMenu)
  376.         MenuStr += "<SPAN STYLE='font:" + cFont + ";color:" + cColor1 + "'> |</SPAN>";
  377.     MenuStr += tagStr;
  378.     
  379.     HTMLStr = HTMLStr.replace(tagStr, MenuStr);    
  380.     setSubMenuWidth(MenuIDStr,"default",0);
  381. }
  382.  
  383. function addICPSubMenu(MenuIDStr, SubMenuStr, SubMenuURLStr)
  384. {    
  385.     if (addICPSubMenu.arguments.length > 3)
  386.         TargetStr = addICPSubMenu.arguments[3];
  387.     else
  388.         TargetStr = "_top";
  389.     tempID = "ICP_" + MenuIDStr;
  390.     addSubMenu(tempID,SubMenuStr,SubMenuURLStr,TargetStr,true); 
  391. }
  392.  
  393. function addMSSubMenu(MenuIDStr, SubMenuStr, SubMenuURLStr)
  394. {    
  395.     TargetStr = "_top";
  396.     tempID = "MS_" + MenuIDStr;
  397.     addSubMenu(tempID,SubMenuStr,SubMenuURLStr,TargetStr,false); 
  398. }
  399.  
  400. function addSubMenu(MenuIDStr, SubMenuStr, SubMenuURLStr, TargetStr, bICPMenu)
  401. {
  402.     cFont   = bICPMenu? ICPFont : MSFont;
  403.     cColor0 = bICPMenu? aDefICPColor[0] : aDefMSColor[0];
  404.     cColor1 = bICPMenu? aDefICPColor[1] : aDefMSColor[1];
  405.     cColor2 = bICPMenu? aDefICPColor[2] : aDefMSColor[2];
  406.     
  407.     var MenuPos = MenuIDStr.toUpperCase().indexOf("MENU");
  408.     if (MenuPos == -1) { MenuPos = MenuIDStr.length; }
  409.     InstrumentStr = MenuIDStr.substring(0 , MenuPos) + "|" + SubMenuStr;;
  410.     URLStr        = formatURL(SubMenuURLStr, InstrumentStr);
  411.  
  412.     var LookUpTag  = "<!--" + MenuIDStr + "-->";
  413.     var sPos = HTMLStr.indexOf(LookUpTag);
  414.     if (sPos <= 0)
  415.     {
  416.         HTMLStr += newLineChar + newLineChar +
  417.                 "<SPAN ID='" + MenuIDStr + "'" +
  418.                 " STYLE='display:none;position:absolute;width:160;background-color:" + cColor0 + ";padding-top:0;padding-left:0;padding-bottom:20;z-index:9;'" +
  419.                 " onmouseout='hideMenu();'>";
  420.         if (Frame_Supported == false || bICPMenu == false)
  421.             HTMLStr += "<HR  STYLE='position:absolute;left:0;top:0;color:" + cColor1 + "' SIZE=1>";
  422.         HTMLStr += "<DIV STYLE='position:relative;left:0;top:8;'>";
  423.     }
  424.  
  425.     TempStr = newLineChar +
  426.                 "<A ID='AS_" + MenuIDStr + "'" +
  427.                 "   STYLE='text-decoration:none;cursor:hand;font:" + cFont + ";color:" + cColor1 + "'" +
  428.                 "   HREF='" + URLStr + "' TARGET='" + TargetStr + "'" +
  429.                 " onmouseout="  + char34 + "mouseMenu('out' ,'" + MenuIDStr + "');" + char34 + 
  430.                 " onmouseover=" + char34 + "mouseMenu('over','" + MenuIDStr + "');" + char34 + ">" +
  431.                 " " + SubMenuStr + "</A><BR>" + LookUpTag;
  432.     if (sPos <= 0)
  433.         HTMLStr += TempStr + "</DIV></SPAN>";
  434.     else
  435.         HTMLStr = HTMLStr.replace(LookUpTag, TempStr);    
  436.  
  437.     updateSubMenuWidth(MenuIDStr);    
  438. }
  439.  
  440. function addICPSubMenuLine(MenuIDStr)
  441. {    
  442.     tempID = "ICP_" + MenuIDStr;
  443.     addSubMenuLine(tempID,true);
  444. }
  445.  
  446. function addMSSubMenuLine(MenuIDStr)
  447. {    
  448.     tempID = "MS_" + MenuIDStr;
  449.     addSubMenuLine(tempID,false);
  450. }
  451.  
  452. function addSubMenuLine(MenuIDStr, bICPMenu)
  453. {
  454.     var LookUpTag = "<!--" + MenuIDStr + "-->";
  455.     var sPos = HTMLStr.indexOf(LookUpTag);
  456.     if (sPos > 0)
  457.     {
  458.         cColor  = bICPMenu? aDefICPColor[1] : aDefMSColor[1];
  459.         TempStr = newLineChar + "<HR STYLE='color:" + cColor + "' SIZE=1>" + LookUpTag;
  460.         HTMLStr = HTMLStr.replace(LookUpTag, TempStr);
  461.     }
  462. }
  463.  
  464. function mouseMenu(id, MenuIDStr) 
  465. {
  466.     IsMSMenu   = (MenuIDStr.toUpperCase().indexOf("MS_") != -1);
  467.     IsMouseout = (id.toUpperCase().indexOf("OUT") != -1);
  468.  
  469.     if (IsMouseout)
  470.     {
  471.         color = IsMSMenu? aDefMSColor[1] : aDefICPColor[1];
  472.         if (MenuIDStr == CurICPMenu && aCurICPColor[1] != "") 
  473.             color = aCurICPColor[1];
  474.     }
  475.     else
  476.     {
  477.         color = IsMSMenu? aDefMSColor[2] : aDefICPColor[2];
  478.         if (MenuIDStr == CurICPMenu && aCurICPColor[2] != "") 
  479.             color = aCurICPColor[2];
  480.     }
  481.     window.event.srcElement.style.color = color;
  482. }
  483.  
  484. function doMenu(MenuIDStr) 
  485. {
  486.     var thisMenu = document.all(MenuIDStr);
  487.     if (ToolbarMenu == null || thisMenu == null || thisMenu == ToolbarMenu) 
  488.     {
  489.         window.event.cancelBubble = true;
  490.         return false;
  491.     }
  492.     // Reset dropdown menu
  493.     window.event.cancelBubble = true;
  494.     ToolbarMenu.style.display = "none";
  495.     showElement("SELECT");
  496.     showElement("OBJECT");
  497.     ToolbarMenu = thisMenu;
  498.     IsMSMenu = (MenuIDStr.toUpperCase().indexOf("MS_") != -1);
  499.  
  500.     // Set dropdown menu display position
  501.     x  = window.event.srcElement.offsetLeft +
  502.           window.event.srcElement.offsetParent.offsetLeft;
  503.     if (MenuIDStr == LastMSMenu) 
  504.         x += (window.event.srcElement.offsetWidth - thisMenu.style.posWidth);
  505.     x2 = x + window.event.srcElement.offsetWidth;
  506.     y  = (IsMSMenu)? 
  507.          (idRow1.offsetHeight) :
  508.          (idRow1.offsetHeight + idRow2.offsetHeight + idRow3.offsetHeight);
  509.     thisMenu.style.top  = y;
  510.     thisMenu.style.left = x;
  511.     thisMenu.style.clip = "rect(0 0 0 0)";
  512.     thisMenu.style.display = "block";
  513.  
  514.     // delay 2 millsecond to allow the value of ToolbarMenu.offsetHeight be set
  515.     window.setTimeout("showMenu()", 2);
  516.     return true;
  517. }
  518.  
  519. function showMenu() 
  520. {
  521.     if (ToolbarMenu != null) 
  522.     { 
  523.         IsMenuDropDown = (Frame_Supported && IsMSMenu == false)? false : true;
  524.         if (IsMenuDropDown == false)
  525.         {
  526.             y = (y - ToolbarMenu.offsetHeight - idRow3.offsetHeight);
  527.             if (y < 0) y = 0;
  528.             ToolbarMenu.style.top = y;
  529.         }
  530.         y2 = y + ToolbarMenu.offsetHeight;
  531.  
  532.         ToolbarMenu.style.clip = "rect(auto auto auto auto)";
  533.         hideElement("SELECT");
  534.         hideElement("OBJECT");
  535.         hideElement("IFRAME");  //FRANKLO
  536.     }
  537. }
  538.  
  539. function hideMenu()
  540. {
  541.     if (ToolbarMenu != null && ToolbarMenu != StartMenu) 
  542.     {
  543.         // Don't hide the menu if the mouse move between the menu and submenus
  544.         cY = event.clientY + document.body.scrollTop;
  545.         if ( (event.clientX >= (x+5) && event.clientX <= x2) &&
  546.              ((IsMenuDropDown == true  && cY > (y-10) && cY <= y2)      ||
  547.               (IsMenuDropDown == false && cY >= y     && cY <= (y2+10)) ))
  548.         {
  549.             window.event.cancelBubble = true;
  550.             return; 
  551.         }
  552.  
  553.         ToolbarMenu.style.display = "none";
  554.         ToolbarMenu = StartMenu;
  555.         window.event.cancelBubble = true;
  556.  
  557.         showElement("SELECT");
  558.         showElement("OBJECT");
  559.         showElement("IFRAME"); //FRANKLO
  560.     }
  561. }
  562.  
  563. function hideElement(elmID)
  564. {
  565.     for (i = 0; i < document.all.tags(elmID).length; i++)
  566.     {
  567.         obj = document.all.tags(elmID)[i];
  568.         if (! obj || ! obj.offsetParent)
  569.             continue;
  570.  
  571.         // Find the element's offsetTop and offsetLeft relative to the BODY tag.
  572.         objLeft   = obj.offsetLeft;
  573.         objTop    = obj.offsetTop;
  574.         objParent = obj.offsetParent;
  575.         while (objParent.tagName.toUpperCase() != "BODY")
  576.         {
  577.             objLeft  += objParent.offsetLeft;
  578.             objTop   += objParent.offsetTop;
  579.             objParent = objParent.offsetParent;
  580.         }
  581.         // Adjust the element's offsetTop relative to the dropdown menu
  582.         objTop = objTop - y;
  583.  
  584.         if (x > (objLeft + obj.offsetWidth) || objLeft > (x + ToolbarMenu.offsetWidth))
  585.             ;
  586.         else if (objTop > ToolbarMenu.offsetHeight)
  587.             ;
  588.         else if (IsMSMenu && (y + ToolbarMenu.offsetHeight) <= 80)
  589.             ;
  590.         else
  591.             obj.style.visibility = "hidden";
  592.     }
  593. }
  594.  
  595. function showElement(elmID)
  596. {
  597.     for (i = 0; i < document.all.tags(elmID).length; i++)
  598.     {
  599.         obj = document.all.tags(elmID)[i];
  600.         if (! obj || ! obj.offsetParent)
  601.             continue;
  602.         obj.style.visibility = "";
  603.     }
  604. }
  605.  
  606. function formatURL(URLStr, InstrumentStr)
  607. {
  608.     var tempStr = URLStr;
  609.  
  610.     if (DoInstrumentation && URLStr != "" )
  611.     {
  612.         var ParamPos1 = URLStr.indexOf("?");
  613.         var ParamPos2 = URLStr.lastIndexOf("?");
  614.         var ParamPos3 = URLStr.toLowerCase().indexOf("target=");
  615.         var ParamPos4 = URLStr.indexOf("#");
  616.         var Bookmark  = "";
  617.         var URL = URLStr;
  618.         if (ParamPos4 >= 0)
  619.         {
  620.              URL = URLStr.substr(0, ParamPos4);
  621.             Bookmark = URLStr.substr(ParamPos4);
  622.         }
  623.         
  624.         if (ParamPos1 == -1)
  625.             tempStr = "?MSCOMTB=";
  626.         else if (ParamPos1 == ParamPos2 && ParamPos3 == -1)    
  627.             tempStr = "&MSCOMTB=";
  628.         else if (ParamPos1 == ParamPos2 && ParamPos3 != -1)    
  629.             tempStr = "?MSCOMTB=";
  630.         else if (ParamPos1 < ParamPos2)
  631.             tempStr = "&MSCOMTB=";
  632.  
  633.         tempStr = URL + tempStr + InstrumentStr.replace(" ","%20") + Bookmark;
  634.     }
  635.     return tempStr;
  636. }
  637.  
  638. function prepTrackingString(ts, type)
  639. {
  640.     var rArray;
  641.     var rString;
  642.     var pName = '';
  643.     if (0 == type)
  644.     {
  645.         pName = 'p=';
  646.         rString = ts.substring(1);
  647.         rArray = rString.split('/');
  648.     }
  649.     if (1 == type)
  650.     {
  651.         pName = 'qs=';
  652.         rString = ts.substring(1);
  653.         rArray = rString.split('&');        
  654.     }
  655.     if (2 == type)
  656.     {
  657.         pName = 'f=';
  658.         rString = escape(ts);
  659.         return pName + rString;
  660.     }
  661.     if (3 == type)
  662.     {
  663.         pName = 'tPage=';
  664.         rString = escape(ts);
  665.         return pName+rString;
  666.     }
  667.     if (4 == type)
  668.     {
  669.         pName = 'sPage=';
  670.         rString = escape(ts);
  671.         return pName + rString;
  672.     }
  673.     if (5 == type)
  674.     {
  675.         pName = 'r=';
  676.         rString = escape(ts);
  677.         return pName + rString;
  678.     }
  679.     if (6 == type)
  680.     {
  681.         pName = 'MSID=';
  682.         rString = escape(ts);
  683.         return pName + rString;
  684.     }
  685.     if (7 == type)
  686.     {
  687.         pName = 'source=';
  688.         rString = ts.toLowerCase();
  689.         if(rString.indexOf("microsoft.com") != -1)
  690.         {
  691.             rString = rString.substring(0,rString.indexOf("microsoft.com"));
  692.             if('' == rString)
  693.             {
  694.                 rString = "www";
  695.             }    
  696.             else
  697.             {
  698.                 rString = rString.substring(0,rString.length -1);
  699.             }
  700.         }
  701.         return pName + rString;
  702.     }
  703.     if (8 == type)
  704.     {
  705.         pName = 'TYPE=';
  706.         rString = escape(ts);
  707.         return pName + rString;
  708.     }
  709.     rString = '';
  710.     if(null != rArray)
  711.     {
  712.         if(0 == type)
  713.         {
  714.             for( j=0; j < rArray.length - 1; j++)
  715.             {    
  716.                 rString += rArray[j] + '_';  
  717.             } 
  718.         }
  719.         else
  720.         {
  721.             for( j=0; j < rArray.length  ; j++)
  722.             {
  723.                 rString += rArray[j] + '_';  
  724.             } 
  725.         }
  726.     }
  727.     rString = rString.substring(0, rString.length - 1);           
  728.     return pName + rString;
  729. }
  730.  
  731. function buildIMG(pArr)
  732. {
  733.     var TG = '<LAYER visibility="hide"><div style="display:none;"><IMG src="http://c.microsoft.com/trans_pixel.gif?';
  734.     for(var i=0; i<pArr.length; i++)
  735.     {
  736.         if(0 == i)
  737.         {
  738.             TG +=  pArr[i];
  739.         }
  740.         else
  741.         {
  742.             TG += '&' + pArr[i];
  743.         }
  744.     }
  745.     TG +='" height="0" width="0" hspace="0" vspace="0" Border="0"></div></layer>';
  746.     document.write(TG);
  747. }
  748.  
  749.  
  750.